package com.hyt.it.ogt.kq.service.gov.schedule;

import java.util.List;
import java.util.Set;

import org.apache.commons.lang3.tuple.ImmutablePair;

import com.hyt.it.ogt.kq.service.gov.schedule.model.Candidate;
import com.hyt.it.ogt.kq.service.gov.schedule.model.ExamInfo;
import com.hyt.it.ogt.kq.service.gov.schedule.model.ExamRoom;
import com.hyt.it.ogt.kq.service.gov.schedule.model.ScheduleConstrain;
import com.hyt.it.ogt.kq.service.gov.schedule.model.ScheduleResult;

public interface ExamRoomSchedule {

        /***
         * 实体考场编排
         * 参数：
         * 1、编排设置
         * 2、考试批次 （批次号、批次包括科目， 批次考生列表）
         * 3、考场列表
         * 4、前面已编排的数据
         * 
         * @return
         */
        List<ScheduleResult> schedule(ScheduleConstrain scheduleConstrain, List<ExamInfo> examInfos, String groupName,
                        List<String> batchNoList,
                        Set<ExamRoom> examRooms, Set<Candidate> candidates);

        /***
         * 实体考场多批次编排
         * 参数：
         * 1、编排设置
         * 2、考试批次 （批次号、批次包括科目， 批次考生列表）
         * 3、考场列表
         * 
         * @return
         */
        public ImmutablePair<List<ScheduleResult>, List<ExamRoom>> schedule(ScheduleConstrain scheduleConstrain,
                        List<ExamInfo> examInfos,
                        List<ExamRoom> examRooms);

        /***
         * 虚拟考场单批次编排
         * 
         * @return
         */
        public ImmutablePair<List<ScheduleResult>, List<ExamRoom>> scheduleVirRoom(ScheduleConstrain scheduleConstrain,
                        List<ExamInfo> examInfos);

}
